Model-driven engineering and related concepts relate, for example, to the use of formalized models to design, manage, implement, and modify software applications and other processes. Such models provide a formalized abstraction of desired software properties and behaviors, and this abstraction provides, among other benefits, an ability of a designer or other user to understand, explain, create, or implement the software application(s) in a manner that is consistent, logical, and efficient.
In theory, then, such development models may be modified as-needed to obtain a desired result. At times, however, it may be useful or desirable to use a development model that (in whole or in part) should not, or must not, be modified. For example, a developer may use a development model that is vender-specific/vender-confidential in whole or in part, and therefore the developer may not have the necessary levels of access to modify the development model. In another example, a developer may use tools to extend a development model, e.g., to add functionality to an existing development model and associated software application. In such cases, it may be undesirable or impossible to modify some or all of the resulting, extended development model.
In particular, it is possible to modify development models (e.g., to modify associated development meta-models) to add annotations which may be used to better understand or implement the development models. For example, such annotations may be related to a desired performance or security level(s) of the development model, or individual elements thereof. However, in the cases such as those just mentioned where the development model should or must not be modified, it may be difficult or impossible to add such annotations to gain the advantages related thereto.